www.gusucode.com > Weighted Differential Evolution Algorithm (WDE) > Weighted Differential Evolution Algorithm (WDE)/cc_wde/classic_benchmark_problems/fletcher.m

    function ObjVal = fletcher(Chrom,option)

% Compute population parameters
   [Nind, Nvar] = size(Chrom);

%
      % retrieve data
      %   A = (a_ij), B = (b_ij) are random matrices with
      %   -100 <= a_ij, b_ij <= 100 for i,j = 1:Nvar
      %   alpha = (alpha_i) is a random vector with
      %   -pi <= alpha_i <= pi for i = 1:Nvar
      [A,B,alpha] = getFletwellData(Nvar);

      % Fletcher and Powell:
      %  f: R^n --> N, x -> f(x)
      %  let yi = ceil(xi) for all i = 1:Nvar   (ceil only for discrete variant)
      %  let beta_i = ceil(alpha_i) for all i = 1:Nvar  (ceil only for discrete variant)
      %  for all i = 1:Nvar let 
      %      Ai = sum of ( a_ij * sin(beta_j) + b_ij * cos(beta_j) ) for j = 1:Nvar
      %      Bi = sum of ( a_ij * sin(y_j) + b_ij * cos(y_j) ) for j = 1:Nvar
      %  let z = sum of (Ai - Bi)^2 for i = 1:Nvar
      %  f = ceil(z)   (ceil only for discrete variant)
      %  n = Nvar, -500 <= xi <= 500
      %  global minimum at (xi) = (alpha) ; fmin = 0
      Ai = A*sin(alpha)' + B*cos(alpha)';
      Bi = zeros(Nind, Nvar);
     %whos
      for k = 1:Nind, Bi(k,:) = (A*sin(Chrom(k,:)') + B*cos(Chrom(k,:)'))'; end
      ObjVal = sum((repmat(Ai,1,Nind)-Bi').^2)';
     

% End of function


% Private function
%
% GET DATA for FLETcher and PoWELL objective function
%
% This function retrieves the data for the function after 
% Fletcher and Powell.
%
% Syntax: [A,B,alpha] = getFletwellData(Dim)
%
% Input Parameter:
%   Dim   - Number containg the dimension of the function. Default
%           dimension is 20.
%
% Output Parameter: 
%   A     - random matrix A of the function after Fletcher and Powell
%   B     - random matrix B of the function after Fletcher and Powell
%   alpha - random vector alpha of the function after Fletcher and Powell

% Author:   Hartmut Pohlheim
% History:  08.11.99    file created


function [A,B,alpha] = getFletwellData(Dim)


A = [ 
     -79   56  -62   -9   92   48  -22  -34  -39  -40  -95  -69  -20  -66  -98  -66  -67   37  -83  -45;
      91   -9  -18  -59   99  -45   88  -14  -29   26   71  -65   19   45   88   18  -11  -81  -10   42;
     -38    8  -12  -73   40   26  -64   29  -82  -32  -89   -3   88   98   53   58   45  -39   34  -23;
     -78  -18  -49   65   66  -40   88  -95  -57   10  -98  -11  -16  -55   33   84   21  -43   45  100;
      -1  -43   93  -18  -76  -68  -42   22   46  -14   69   27  -12  -26   57  -13    0    1   56   17;
      34  -96   26  -56  -36  -85  -62   13   93   78  -43   96   77   65  -34  -52   82   18  -59  -55;
      52  -46  -69   99  -47  -72  -11   55  -55   91  -30    7  -35   23  -20   55   61  -39  -58   13;
      81   47   35   55   67  -13   33   14   83  -42    8  -45  -44   12  100   -9  -33  -11   21   14;
       5  -43  -45   46   56  -94  -62   52   66   55  -86  -29  -52  -71  -91  -46   27  -27    6   67;
     -50   66  -47  -75   89  -16   82    6  -85  -62  -30   31   -7  -75  -26  -24   46  -95  -71  -57;
      24   98  -50   68  -97  -64  -24   81  -59   -7   85  -92    2   61   52  -59  -91   74  -99  -95;
     -30  -63  -32  -90  -35   44  -64   57   27   87  -70  -39  -18  -89   99   40   14  -58   -5  -42;
      56    3   88   38  -14  -15   84   -9   65  -20  -75  -37   74   66  -44   72   74   90  -83  -40;
      84    1   73   43   84  -99  -35   24  -78  -58   47  -83   94  -86  -65   63  -22   65   50  -40;
     -21   -8  -48   68  -91   17  -52  -99  -23   43   -8   -5  -98  -17  -62  -79   60  -18   54   74;
      35   93  -98  -88   -8   64   15   69  -65  -86   58  -44   -9  -94   68  -27  -79  -67  -35  -56;
     -91   73   51   68   96   49   10  -13   -6  -23   50  -89   19  -67   36  -97    0    3    1   39;
      53   66   23   10  -33   62  -73   22  -65   37  -83  -65   59  -51  -56   98  -57  -11  -48   88;
      83   48   67   27   91  -33  -90  -34   39  -36  -68   17   -7   14   11  -10   96   98  -32   56;
      52  -52   -5   19  -25   15   -1  -11    8  -70   -4   -7   -4   -6   48   88   13  -56   85  -65
    ];

B = [ 
     -65  -11   76   78   30   93  -86  -99  -37   52  -20  -10  -97  -71   16    9  -99  -84   90  -18  -94;
      59   67   49  -45   52  -33  -34   29  -39  -80   22    7    3  -19  -15    7  -83   -4   84  -60   -4;
      21  -23  -80   86   86  -30   39  -73  -91    5   83   -2  -45  -54  -81   -8   14   83   73   45   32;
     -91  -75   20  -64  -15   17  -89   36  -49   -2   56   -6   76   56    2  -68  -59  -70   48    2   24;
     -79   99  -31   -8  -67  -72  -43  -55   76  -57    1  -58    3  -59   30   32   57   29   66   50  -80;
     -89  -35  -55   75   15   -6  -53  -56  -96   87  -90  -93   52  -86  -38  -55  -53   94   98    4  -79;
     -76   45   74   12  -12  -69    2   71   75  -60  -50   23    0    6   44  -82   37   91   84  -15  -63;
     -50  -88   93   68   10  -13   84  -21   65   14    4   92   11   67  -18  -51    4   21  -38   75  -59;
     -23  -95   99   62  -37   96   27   69  -64  -92  -12   87   93  -19  -99  -92  -34  -77   17  -72   29;
      -5  -57  -30   -6  -96   75   25   -6   96   77  -35  -10   82   82   97  -39  -65   -8   34   72   65;
      85   -9  -14   27  -45   70   55   26  -87  -98  -25  -12   60  -45  -24  -42  -88  -46  -95   53   28;
      80  -47   38   -6   43  -59   91  -41   90  -63   11  -54   33  -61   74   96   21  -77  -58  -75   -9;
     -66  -98   -4   96  -11   88  -99    5    5   58  -53   52  -98  -97   50   49   97  -62   79  -10  -80;
      80  -95   82    5  -68  -54   64   -2    5   10   85  -33  -54  -30  -65   58   40  -21  -84  -66  -11;
      94   85  -31   37  -25   60   55  -13   48  -23  -50   84  -71   54   47   18  -67  -30    5  -46   53;
     -29   54  -10  -68  -54  -24  -16   21   32   33  -27   48   37  -61   97   45  -90   87  -95   85   67;
      76  -11  -48   38   -7   86  -55   51   26    8  -96   99   69  -84   41   78  -53    4   29   38   16;
      -8   48   95   47   39  -11  -72  -95  -17   33   65   96  -52  -17  -22  -15  -91  -41  -16   23   14;
      92   87   63  -63  -80   96  -62   71  -58   17  -89  -35  -96  -79    7   46  -74   88   93  -44   52;
     -21   35   16  -17   54  -22  -93   27   88    0  -67   94  -24  -30  -90   -5  -48   45  -90   32  -81;
     -86   31  -80  -79   -5   11  -20    9   52  -38   67   64  -49   23  -86   39  -97   76   10   81   20
    ];

alpha = [ -2.7910, 2.5623, -1.0429, 0.5097, -2.8096,  1.1883, 2.0771, -2.9926,  0.0715, 0.4142, ...
          -2.5010, 1.7731,  1.6473, 0.4934,  2.1038, -1.9930, 0.3813, -2.2144, -2.5572, 2.9449];


if isempty(Dim), Dim = 20; end
if any([Dim < 1, Dim > 20]), Dim = 20; end

A = A(1:Dim,1:Dim);
B = B(1:Dim,1:Dim);
alpha = alpha(1:Dim);


% End of private function


  return